package dancereal;

public class J24_CompareObject {

	/* 객체 비교하기
	 * "내 차 색깔과 당신 차 색깔이 똑같다"
	 * "내 차와 당신 차가똑같다" (상태,색상,종류)
	 * 클래스의 객체는 실제 데이터가 저장된 주소를 
	 * 가지고 있기 때문에 단순비교==로는 객체가 같은지
	 * 객체가 서로 같은지 알 수 없음 
	 * 자바에서는 기본적으로 객체를 비교할 때에는
	 * equals, hashCode 메서드를 이용함
	 * 또한, 유틸리티 클래스 Comparable,Comparator
	 * 등을 이용하기도 함
	 * 
	 * 참고로, String 객체를 비교할때에는
	 * equals 메서드를 이용해서 비교해야 함  
	 */
	
	public static void main(String[] args) {
	
		CarVO MyCar = new CarVO("새것","빨강","스포츠카");
		CarVO YourCar = new CarVO("새것","빨강","스포츠카");
		System.out.println(MyCar);
		System.out.println(YourCar);
		if (MyCar == YourCar)
			System.out.println("내꺼랑 네꺼랑 같음");
		else
			System.out.println("내꺼랑 네꺼랑 다름");
		
		/* ------------------------------- */
		
		if(MyCar.color == YourCar.color)
			System.out.println("같음");
		else System.out.println("다름");
		/* ------------------------------- */
		
		String char1 = "가";
		String char2 = "가";
		
		if(char1 == char2)
			System.out.println("같음");
		else System.out.println("다름");
		/* ------------------------------- */
		
		String char3 = "나";
		String char4 = new String("나");
		
		if(char3 == char4)
			System.out.println("char3과 char4는 같음");
		else System.out.println("char3과 char4는 다름");
		
		if(char3.equals(char4))
			System.out.println("char3과 char4는 같음");
		else System.out.println("char3과 char4는 다름");
		/* ------------------------------- */
		
		String char5 = new String("다");
		String char6 = new String("다");
		
		if(char5 == char6)
			System.out.println("char5와 char6은 같음");
		
		if(char5.equals(char6))
			System.out.println("char5와 char6은 같음");
		
	}

} // J24

class CarVO {
	public String status;
	public String color;
	public String type;
	
	public CarVO(){}
	public CarVO(String status, String color, String type){
	this.status = status;
	this.color = color;
	this.type = type;
	}
}


